
#include <iostream>
#include <unistd.h>
#include <signal.h>
#include <sys/types.h>
#include <cstdlib>

using namespace std;
//int: 收到了哪一个信号
void myhandler(int signo)
{
    cout<<"process get a siganal: "<<signo<<endl;
    exit(1);
}

void Usage(string proc)
{
    cout << "Usage :\n\t"<<proc<<" signnum pid\n\n";
}

//mykill signnum pid
int main(int argc,char* argv[])//-------argc是参数的个数,3,不是0-1-2 的2
{
    signal(2,myhandler);//------捕捉信号
    int cnt=5;
    while(true)
    {
        cout <<"I am a process ,pid:"<<getpid()<<endl;
        sleep(1);
        cnt--;
        if(cnt==0)
        {
            raise(2);//---------给自己发一个2号信号
            //相当于  ----  kill(getpid(),2)
            break;
        }
    }


    // if(argc!= 3)
    // {
    //     Usage(argv[0]);
    //     exit(1);
    // }
    // int signnum = stoi(argv[1]);
    // pid_t pid=stoi(argv[2]);
    // int ret = kill(pid,signnum);
    // if(ret<0)
    // {
    //     perror("kill");
    //     exit(2);
    // }
    return 0;
}





// int main()
// {
//     signal(SIGINT,myhandler);//----只需要设置一次,往后都有效
//     //虽然signal函数使用在这里
//     //但是myhandler函数,只有在后面产生SIGINI信号,才会被调用



//     while(true)
//     {
//         cout << "I am a crazy signal"<<endl;
//         sleep(1);
//     }
//     return 0;
// }
